//实现loader
let core = require('@babel.core');
const {getOptions} = require('loader-utils');

function loader(source, inputSourceMap,inputAst) {
//loader中的this 代表的谁 loaderContext
//callback是this上的内置方法
//return 只能返回一个值 callback可以返回多个值，还支持异步
  const options = getOptions(this) ||{}
  options = {
    preset: ["@loader/preset-env"],
    inputSourceMap,
    sourceMaps: true, //生成sourcemap
    fileName:this.resourcePath,
    ...options
  };
  let {code,map,ast} = core.transform(source,options);
  //return code;//如果返回是一个值
  //如果返回的是多个值
  return this.callback(null,code,map,ast)
}

module.exports = loader;

//loader-utils 用来获取loader的参数
// devtool
// source-map 包含loader的sourcemap
